{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%reload_ext autoreload\n",
    "%autoreload 2\n",
    "%matplotlib inline\n",
    "\n",
    "import sys\n",
    "sys.path.append('..')\n",
    "\n",
    "from helper import linear_regression as lr\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X, y, Xval, yval, Xtest, ytest = lr.load_data()\n",
    "# insert the intercept data of every X\n",
    "X, Xval, Xtest = [np.insert(x.reshape(x.shape[0], 1), 0, np.ones(x.shape[0]), axis=1) for x in (X, Xval, Xtest)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "training_cost, cv_cost = [], []"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. use the subset of training set to fit the model\n",
    "2. no regularization when you compute the training cost and CV cost\n",
    "3. remember to use the same subset of training set to compute training cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "m = X.shape[0]\n",
    "for i in range(1, m+1):\n",
    "#     print('i={}'.format(i))\n",
    "    res = lr.linear_regression_np(X[:i, :], y[:i], l=0)\n",
    "    \n",
    "    tc = lr.regularized_cost(res.x, X[:i, :], y[:i], l=0)\n",
    "    cv = lr.regularized_cost(res.x, Xval, yval, l=0)\n",
    "#     print('tc={}, cv={}'.format(tc, cv))\n",
    "    \n",
    "    training_cost.append(tc)\n",
    "    cv_cost.append(cv)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x117fba7b8>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n5syZ/PSnP+Wkk07iZz/7GQC9evWqtMY64Zyr9w8gCXCZmZmuPlr03SLHbbhXv3zV71JEpA5kZma6\n+vxvUm3cc889LhAIuHXr1h2xzsxceHi4W7ly5RHrDh48WOp9fn6+O+6449yZZ55Zann37t1denp6\n8fvp06c7M3Nnn312qXaTJk1yERERbvfu3cXLhg0b5oYPH178/t1333Vm5gYOHOjy8/OLlz/wwAMu\nEAi4ZcuWOeecy83NdQkJCe7kk092BQUFxe1mzJjhzKzUPsuzevVqFxYW5i699NKjttm2bZuLiopy\n5557bqnlDz30kAsEAm769OnOOecWL17szMw9//zzFX5ms2bNSh2nilT2+3hoPZDkavl9rD+LgyCp\nYxLHtTuOaYuncV6f8/wuR0Tqkf37YeXK0H9O//4QGxv6zxk2bBj9+vU7YnlUVFTx6127dpGfn8/Q\noUOZNWtWpfs0s+K/qA8ZOnQo999/P+vWrSMxMbHC7X/yk5+UGicxdOhQnHN88803HHvssSxatIjv\nv/+ev/3tb6Wuvhg3bhy//vWvK63vhRdewDnHrbfeetQ2b731Fnl5eUfs7+qrr+YPf/gDr776Kj/+\n8Y+Jj48HYN68eZxzzjnExMRU+vn1iUJDEJgZ6UPS+f2C3/P9/u9pE9vG75JEpJ5YuRKSk0P/OZmZ\nUBf3zjp0OqKsV155hdtvv53FixeXGhxZ1Usky54iaNWqFQA7d+6s9bbr1q3DzI7o4g8LCzvqz1PS\nN998QyAQqPCOpuvWrQOgb9++pZZHRETQs2fP4vXdu3fnhhtu4L777mPmzJkMHTqU0aNHM378eFq0\naFFpLX5TaAiSHw36Eb9967dkLM1gwokT/C5HROqJ/v29L/S6+Jy6UN5fxh988AEXXnghw4YN45FH\nHqFjx45ERETwxBNPlBqTUJGjXVHhqnA1R222rYqq7Kc6n3X33XeTlpbGSy+9xBtvvMH111/PnXfe\nySeffEKnTp1qU2rIKTQESbu4dozqM4ppi6cpNIhIsdjYuukBCJaaTLz0/PPPExMTw/z580tdEvnv\nf/87mKXVWLdu3XDOsXr1ak4//fTi5QUFBaxdu5bBgwdXuH3v3r0pLCxk+fLlDBo0qNw2h3osVq1a\nVar3Ii8vjzVr1nDWWWeVaj9w4EAGDhzIH/7wBz755BN++MMf8uijjzJlyhSgZv8d6oIuuQyi9CHp\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x117f5ef98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.arange(1, m+1), training_cost, label='training cost')\n",
    "plt.plot(np.arange(1, m+1), cv_cost, label='cv cost')\n",
    "plt.legend(loc=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "the model can't even fit traning set well, **under fitting**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda env:tf]",
   "language": "python",
   "name": "conda-env-tf-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
